#自定义栈的相关操作
class Stack:
    def __init__(self):
        self.__list=[]
    def push(self,data):  #在栈顶压栈
        self.__list.append(data)
    def pop(self):   #在栈顶取出
        if self.__list==[]:
            return '这是一个空栈'
        else:
            return self.__list.pop()
    def peek(self):   #查看栈顶元素
        if self.__list==[]:
            return None
        else:
            return self.__list[-1]
    #判断栈是否是空的
    def is_empty(self):
        return self.__list==[]
    #获取栈的大小
    def size(self):
        return len(self.__list)
#创建一个栈
stack=Stack()
#添加元素
stack.push(1)
stack.push(2)
stack.push(3)
#查看栈顶元素
print(stack.peek())
print(stack.pop())
print(stack.size())
print(stack.is_empty())



#自定义队列
class Queue:
    def __init__(self):
        self.__list=[]
    def enqueue(self,data):
        self.__list.append(data)
    def dequeue(self):
        if self.__list==[]:
            return '空队列'
        else:
            return self.__list.pop(0)
    def is_empty(self):
        return self.__list==[]
    def size(self):
        return len(self.__list)

que=Queue()
que.enqueue(1)
que.enqueue(2)
que.enqueue(3)
print(que.dequeue())
print(que.dequeue())
print(que.is_empty())
print(que.size())


